﻿define('ui/card/enterpriseCard',
	['api/enterpriseService','ui/card/layerCard'], function(enterpriseService, layerCard) {

	/**
	 * 排污许可企业图表选项卡，包含以下功能：
	 * 1、地图上全省排污许可企业按区域、行业、监管类型划分，渲染柱状图
	 * 2、包含的数据：
	 * 1）charts：柱状图表实例化对象
	 * 2）chartsData：柱状图所需的JSON数据
	 */
	var enterpriseCard = {

		/**
		 * 实例化图表对象
		 */
		charts: {
			enterpriseAreaTab:null,
			enterpriseTradeTab:null,
			enterpriseControlTab:null
		},
		
		/**
		 * 图表JSON数据
		 */
		chartsData: {
			enterpriseAreaTab: {
				title: '区域排污许可企业汇总',
				legend: ['企业数量'],
				xAxis: [],
				series: []
			},
			enterpriseTradeTab: {
				title: '行业排污许可企业汇总',
				legend: ['企业数量'],
				xAxis: [],
				series: []
			},
			enterpriseControlTab: {
				title: '监管类型排污许可企业汇总',
				legend: ['企业数量'],
				xAxis: [],
				series: []
			}
		},
		
		/**
		 * 初始化图表
		 */
		initChart: function(divId) {
			var myChart = echarts.init(document.getElementById(divId)); 
			enterpriseCard[''+divId] = myChart;
			return myChart;
		},
		
		/**
		 * 获取图表
		 */
		getChart: function(divId) {
			return enterpriseCard[''+divId];
		},
			
		/**
		 * 加载数据并赋值给chartsData
		 */
		loadJsonData: function() {
			layerCard.showCardItem('enterprise');
			enterpriseService.getEnterprisesCountByArea(function(data){
				var xAxis = [];
				var series = [];
				for(var i=0; i<data.rows.length; i++) {
					if(data.rows[i].groupName.indexOf('广西')!=-1) {
						xAxis.push('广西');
					}else {
						xAxis.push(data.rows[i].groupName);
					}
					series.push(data.rows[i].pointQuantity);
				}
				enterpriseCard.chartsData['enterpriseAreaTab'].xAxis = xAxis;
				enterpriseCard.chartsData['enterpriseAreaTab'].series = series;
				//enterpriseCard.renderTab();
			});
			enterpriseService.getEnterprisesCountByTrade(function(data){
				var xAxis = [];
				var series = [];
				for(var i=0; i<data.rows.length; i++) {
					xAxis.push(data.rows[i].groupName);
					series.push(data.rows[i].pointQuantity);
				}
				enterpriseCard.chartsData['enterpriseTradeTab'].xAxis = xAxis;
				enterpriseCard.chartsData['enterpriseTradeTab'].series = series;
			});
			enterpriseService.getEnterprisesCountByControlLevel(function(data){
				var xAxis = [];
				var series = [];
				for(var i=0; i<data.rows.length; i++) {
					xAxis.push(data.rows[i].groupName);
					series.push(data.rows[i].pointQuantity);
				}
				enterpriseCard.chartsData['enterpriseControlTab'].xAxis = xAxis;
				enterpriseCard.chartsData['enterpriseControlTab'].series = series;
			});
	    },
		
		/**
		 * 重新渲染标签页
		 */
		renderTab:function(data){
			enterpriseCard._onTabToggle();
			enterpriseCard._onTabShown();
		},

		/**
		 * 显示、隐藏排污许可企业信息汇总标签页面板
		 */
		_onTabToggle: function(){
			$("#enterpriseLayerList").click(function(){
				$(this).find('div').toggleClass('on');
				$("#enterpriseTabDiv").toggle();
				$('#enterpriseTabUl a:first').tab('show');
				
				if(enterpriseCard.getChart('enterpriseAreaTab')==null) {
					enterpriseCard.initChart('enterpriseAreaTab');
				} 
				enterpriseCard.createBar('enterpriseAreaTab', enterpriseCard.chartsData['enterpriseAreaTab']);
			});
		},
		
		/**
		 * 标签页显示时触发渲染柱状图，放在
		 */
		_onTabShown:function(){
			$('#enterpriseTabUl>li>a[data-toggle="tab"]').on('shown.bs.tab', function (e) {
				// 获取已激活的标签页的名称
				var activeTab = $(e.target).text(); 
				// 获取前一个激活的标签页的名称
				var previousTab = $(e.relatedTarget).text();
				var divId = $(e.target).attr('href').substring(1);
				//未激活页签时图表未创建，激活tab页签时实例化图表，防止dom多次实例化已存在的对象
				if(enterpriseCard.getChart(divId)==null) {
					enterpriseCard.initChart(divId);
				} 
				enterpriseCard.createBar(divId, enterpriseCard.chartsData[divId]);
			});
		},
		
		 /** 
	     * 添加柱状图 
	     */  
		createBar: function(divId, data) {
		    // 基于准备好的dom，初始化echarts图表
	        var myChart = enterpriseCard.getChart(divId); 
	        
	        var option = {
	    	    title : {
	    	        text: data.title,
	    	        textStyle:{
	    	            fontSize: 14,
	    	            fontWeight: 'bolder',
	    	            color: '#333'
	    	        }    
	    	    },
	    	    tooltip : {
	    	        trigger: 'axis',
	    	        backgroundColor: '#fff',
	    	        textStyle:{ color:'#333' }
	    	    },
	    	    legend: {
	    	    	x:'right',
	    	        data:data.legend
	    	    },

	    	    calculable : true,
	    	    xAxis : [
	    	        {
	    	            type : 'category',
	    	            data : data.xAxis
	    	        }
	    	    ],
	    	    yAxis : [
	    	        {
	    	            type : 'value'
	    	        }
	    	    ],
	    	    series : [
	    	        {
	    	            name:data.legend[0],
	    	            type:'bar',
	    	            itemStyle: {
	    	                normal: {
	    	                	color:'#3385ff'
	    	                }
	    	            },
	    	            data:data.series/*,
	    	            markPoint : {
	    	                data : [
	    	                    {type : 'max', name: '最大值'},
	    	                    {type : 'min', name: '最小值'}
	    	                ]
	    	            },
	    	            markLine : {
	    	                data : [
	    	                    {type : 'average', name: '平均值'}
	    	                ]
	    	            }*/
	    	        }
	    	    ]
	    	};

	        // 为echarts对象加载数据 
	        myChart.setOption(option); 
		}
	};
	
	return enterpriseCard;
});